// 纯函数？
// y = f(x)  输入一定输出得是一定的， 不影响外部变量， 不能依赖外部状态
let date = new Date();
function getTime() {
  return date.toLocaleDateString(); // 不是纯函数, 没有输入结果不确定
}
// 纯函数 redux -》 reducer
let i = 0;
function fn() {
  // 多次调用结果不同，而且没有输入. 影响了外部变量， 产生了副作用
  i++;
  return i;
}

// 副作用
// 对外部资源访问 ajax， 访问数据库、改变全局变量、对公共内存管理、dom访问。。。

// 副作用会对方法的通用性降低， 静态问题。
// 纯函数的好处。 优点：可以缓存， 方便测试， 纯函数可以并发执行。  状态管理都会采用纯函数的方式

// 函数式编程的优势
// 函数式编程 避免了副作用，方便维护， 方便测试，并发执行， 可以组合（方便扩展）
// vue3 响应式api ？ 不是函数式编程，因为没有输入，而且函数多次调用结果不同。 源码内部实现的功能 是基于函数式编程
